# 5.5 智能投石车

## 5.5.1 简介

使用AI视觉模块搭配小车的投石攻城车造型，制作出有趣的自动识别投石器，先将AI视觉模块固定到投石器小车上，然后使用AI模块进行识别如果识别到了人体就蜂鸣器开始倒计时3声然后投掷，投掷结束后缓慢落下投掷臂等待下一次识别到人体后投掷。

## 5.5.2 将AI模块安装到投石小车上

<p style="color:red;font-size:25px;">注意：你需要先按照小车教程将`投石攻城车`的乐高搭建好，然后再按照下方的安装教程进行安装。</p>

**所需配件**

![42](./media/42.png)

**步骤1：**

![43](./media/43.png)

**步骤2：**

![44](./media/44.png)

![45](./media/45.png)

**步骤3：**

![46](./media/46.png)

![47](./media/47.png)

**步骤4：**

|  AI视觉模块  | 小车接口 |
| :----------: | :------: |
| T/C (黄色线) |   SCL    |
| R/D (白色线) |   SDA    |
| V/+ (红色线) |    5V    |
| G/- (黑色线) |    G     |

![56](./media/56.png)

**完整展示：**

![48](./media/48.png)

## 5.5.3 流程图

![49](./media/49.png)



## 5.5.4 代码

如果你选择自己搭建代码，请选择小车的专用开发模块，因为我们要使用AI视觉模块与小车进行互动就会用到小车功能模块代码，添加小车专业的开发模块就能直接使用无需再次添加了。

![a73](./media/a73.png)

1. 在代码启动中设置AI视觉模块的通信方式为`I2C`，再设置AI视觉模块运行`人体检测`模式，定义一个全局变量的int类型“item”

![59](./media/59.png)

2. 使用判断模块对检测数量进行判断，只有检测数量大于0时就证明检测到了人体就可以进行投射了，注意选择的是`人体检测`

   ![61](./media/61.png)

3. 如果检测到"人体"就进行投掷倒计时提示音，总共提示3声间隔0.5S。

![62](./media/62.png)

4. 倒计时提示音结束后就会进行投掷，设置舵机旋转到90度并延时1000ms ；投掷臂缓慢回落，先设置变量"item"为90，然后使用循环模块循环45次并且每次循环使变量"item"减1，将"item"设置成角度值再添加一个15ms的延时，这样就会使舵机每循环一次回落一度达到缓慢回落的效果。

![63](./media/63.png)

**完整代码：**

![64](./media/64.png)

## 5.5.5 代码结果

上传代码成功后，AI视觉模块会开启“人体检测”模式然后对拍到的画面进行识别，判断是否有检测到人体，如果有则进行投掷，投掷前会有三声倒计时提示音倒计时结束就会进行投掷，投掷完成后投掷臂会慢慢的回落等待下一次投掷。这样就完成了一个防盗装置。
